package com.wulaoda.producer;

import java.util.ArrayList;
import java.util.Scanner;

public class StudentManager {
    public static void main(String[] args) {
        ArrayList<Student> array = new ArrayList<>();
        Scanner sc = new Scanner(System.in);
        do {
            System.out.println("--------欢迎来到学生管理系统--------");
            System.out.println("1.添加学生");
            System.out.println("2.删除学生");
            System.out.println("3.修改学生");
            System.out.println("4.查看所有学生");
            System.out.println("5.退出");
            System.out.print("请输入你的选择：");
            int a = sc.nextInt();

            switch(a) {
                case 1:
                    System.out.println("添加学生");
                    addStudent(array);
                    break;
                case 2:
                    System.out.println("删除学生");
                    deleteStudent(array);
                    break;
                case 3:
                    System.out.println("修改学生");
                    System.out.println(array);
                    updateStudent(array);
                    break;
                case 4:
                    System.out.println("查看所有学生");
                    findAllStudent(array);
                    break;
                case 5:
                    System.out.println("感谢使用");
                    System.exit(0);
            }
        } while(true);
    }

    //添加学生
    public static void addStudent(ArrayList<Student> array) {
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入学生学号");
        String sid = sc.nextLine();
        System.out.println("请输入学生姓名");
        String name = sc.nextLine();
        System.out.println("请输入学生年龄");
        String age = sc.nextLine();
        System.out.println("请输入学生居住地");
        String address = sc.nextLine();

        Student s = new Student();
        s.setSid(sid);
        s.setName(name);
        s.setAge(age);
        s.setAddress(address);

        array.add(s);

        System.out.println("添加学生成功");
    }

    //查看学生
    public static void findAllStudent(ArrayList<Student> array) {
        if(array.size() == 0) {
            System.out.println("无信息，请添加信息后再查看");
            return;
        }
        System.out.println("学号\t姓名\t\t年龄\t\t居住地");
        for(int i = 0;i < array.size();i++) {
            Student s = array.get(i);
            System.out.println(s.getSid() + "\t" + s.getName() + "\t" + s.getAge() + "\t\t" + s.getAddress());
        }
    }

    //删除学生
    public static void deleteStudent(ArrayList<Student> array) {
        System.out.println("请输入要删除的学生");
        Scanner sc = new Scanner(System.in);
        String sid = sc.nextLine();
        for(int i = 0;i < array.size();i++) {
            Student s = array.get(i);
            if(s.getSid().equals(sid)) {
                array.remove(i);
                break;
            }else {
                System.out.println("你输入的学号不存在");
                break;
            }
        }
        System.out.println("删除成功");
    }

    //修改学生1
    public static void updateStudent(ArrayList<Student> array) {
        //将我们的学生数组传递进来
        System.out.println(array);

        Scanner sc = new Scanner(System.in);
        if(array.size() == 0) {
            System.out.println("无数据，请先添加学生");
        }

        System.out.println("请输入你要修改的学生的学生号");
        String sid = sc.nextLine();

        //输入想修改的信息
        System.out.println("请依次输入想修改的新姓名，新年龄，新居住地");
        System.out.println("请输入想修改的新姓名:");
        String name = sc.nextLine();
        System.out.println("新年龄:");
        String age = sc.nextLine();
        System.out.println("新居住地");
        String address = sc.nextLine();

        //新建一个学生对象，塞入我们要修改的id，以及其他新信息
        Student s = new Student();
        s.setSid(sid);
        s.setSid(name);
        s.setSid(age);
        s.setSid(address);

        boolean flag = false;//定义一个标志，是否有我们要修改的学生，我们给他一个默认没有
        //然后将我们传递过来的数组，循环遍历，判断。
        // 根据我们的输入的sid找到数组中的数据，覆盖，以达到修改效果
        for (int i = 0; i < array.size(); i++) {//新建for循环，将 i 定义为数组的长度，也就是循环的次数是数组的长度
            Student student = array.get(i);//循环中，以i为下标，获取数组内容
            if (student.getSid().equals(s.getSid())){//如果获取的这条数据的sid跟我们输入的sid相同的话
                flag = true;//能进入这个判断，证明有我们要修改的学生
                array.set(i,s);//直接将数组此下标的数据覆盖
                i=array.size();//这一行可写可不写，针对数据量大的时候可节约代码运行时间，意思直接完成循环，因为我们已经达到我们循环的目的
            }
        }
        if (!flag) System.out.println("你输入的学号不存在");
        //判断flag的值，如果为false，意思没有我们输入的sid的学生，然后我们加一个 非（！），这样if（）里就是true了，当判断逻辑只有一行代码时，可以不写大括号，使代码更简洁

//        if(s.getSid().equals(Sid)) {
//            System.out.println("请输入学号");
//            String sid = sc.nextLine();
//            s.setSid(sid);
//            System.out.println("请输入姓名");
//            String name = sc.nextLine();
//            s.setName(name);
//            System.out.println("请输入年龄");
//            String age = sc.nextLine();
//            s.setAge(age);
//            System.out.println("请输入居住地");
//            String address = sc.nextLine();
//            s.setAddress(address);
//            array.add(s);
//        }else {
//            System.out.println("你输入的学号不存在");
//        }
    }
}
